#include <Wire.h> 
float distance = 0;  //距离数据十进制值
float ds[3];  //创建一个浮点数的数组，用于储存读取到的值

void setup()
{
  Serial.begin(9600);  //定义串口波特率9600 出厂默认波特率9600
  Wire.begin();
  Serial.println("Ultrasonic-IIC 测距开始："); 
}

void loop() 
{
   char i = 0;
   ds[0]=0;
   ds[1]=0;
   ds[2]=0;
   Wire.beginTransmission(0x57);   //地址为0X57 写8位数据为AE，读8位数据位AF
   Wire.write(1);                  //写命令0X01,0X01为开始测量命令 
   Wire.endTransmission();            
   delay(120);                     //测量周期延时，一个周期为100mS,设置120MS,留余量    
   Wire.requestFrom(0x57,3);       //地址为0X57 读3个8位距离数据       
   while (Wire.available())
   {
     ds[i++] = Wire.read();
   }          
   distance=(ds[0]*65536+ds[1]*256+ds[2])/10000; //计算成CM值     
   Serial.print("distance : "); 
   if ((1<=distance)&&(600>=distance))           //1CM-6M之间数值显示 
   {
    Serial.print(distance);
     Serial.print(" CM ");  
   }
   else 
   {
    Serial.print(" - - - - ");                   //无效数值数值显示 - - - - 
   }
   Serial.println();    
   delay(100);                                  //调节测量周期  
}
